package com.frejoys.service;


import com.frejoys.common.dto.admin.SubmitVerifyDto;
import com.frejoys.common.vo.app.UserExtendVerifyVo;
import com.frejoys.common.vo.common.WxH5UserInfoVo;
import com.frejoys.common.vo.common.WxH5Vo;
import com.frejoys.dao.entity.User;

import java.math.BigDecimal;

public interface CommonService {

    /**
     * 获取微信AccessToken
     *
     * @param site
     * @return
     */
    String getWxAccessToken(Integer site);

    /**
     * 微信H5登录
     */
    WxH5Vo getWxH5AccessToken(String code, Integer site);


    /**
     * 验证accessToken是否有效
     */
    boolean validateAccessToken(String accessToken,String openid);

    /**
     * 刷新H5 access_token
     */
    WxH5Vo H5WxRefreshToken(String refreshToken, Integer site);


    /**
     * h5登录获取用户信息（除手机号）
     * @param accessToken
     * @param openid
     * @return
     */
    WxH5UserInfoVo h5GetUserInfo(String accessToken, String openid);


    /**
     * 删除微信AccessToken
     *
     * @param site
     * @return
     */
    void delWxAccessToken(Integer site);

    /**
     * 用户推广
     *
     * @return
     */
    // boolean userExtend(User user, Long userId);

    /**
     * 验证推广者身份
     *
     * @param u             推广者
     * @param promotionUser 被推广者
     */
    // UserExtendVerifyVo verifyIdentify(User u, User promotionUser);


    /**
     * 商品,店铺,活动 下架
     */
    boolean offShelve(SubmitVerifyDto dto);

    // 限制金额
    void limitationMoney(BigDecimal money);

    /**
     * 计算两个经纬度之间的距离
     * @param lat1 第一个点的纬度
     * @param lng1 第一个点的经度
     * @param lat2 第二个点的纬度
     * @param lng2 第二个点的经度
     * @return 两个点之间的距离（单位：公里）
     */
    double calculateDistance(double lat1, double lng1, double lat2, double lng2);


}
